package com.hzya.frame.mdm.mdmModule.service;

import com.alibaba.fastjson.JSONObject;
import com.hzya.frame.mdm.mdmModule.entity.MdmModuleEntity;
import com.hzya.frame.basedao.service.IBaseService;
import com.hzya.frame.mdm.mdmModule.vo.ImportExcelVO;
import com.hzya.frame.mdm.mdmModuleDbFileds.entity.MdmModuleDbFiledsEntity;
import com.hzya.frame.web.entity.JsonResultEntity;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

/**
 * 主数据模版(MdmModule)表服务接口
 *
 * @author makejava
 * @since 2024-06-03 08:46:29
 */
public interface IMdmModuleService extends IBaseService<MdmModuleEntity, String>{

    /**
     * @Author lvleigang
     * @Description  查询所有主数据
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity queryMdm(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  删除主数据
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity deleteMdm(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  主数据-基本信息获取
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity getMdm(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  主数据-基本信息新增
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity saveMdm(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  主数据-基本信息修改（同步修改菜单名称）
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity updateMdm(JSONObject jsonObject);


    /**
     * @Author lvleigang
     * @Description  主数据-数据源-单据规则获取
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity getMdmTableCodeRule(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  主数据-数据源-单据规则新增或修改
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity saveOrUpdateMdmTableCodeRule(JSONObject jsonObject);


    /**
     * @Author lvleigang
     * @Description  主数据-数据源-数据表获取
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity queryMdmDb(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  主数据-数据源-数据表新增
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity saveMdmDb(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  主数据-数据源-数据表修改
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity updateMdmDb(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  主数据-数据源-数据表删除
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity deleteMdmDb(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  主数据-数据源-数据表字段获取
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity queryMdmDbField(JSONObject jsonObject);
    /**
     * @Author lvleigang
     * @Description  主数据-数据源-数据表字段明细
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity queryMdmDbFieldDetail(JSONObject jsonObject);


    /**
     * @Author lvleigang
     * @Description  主数据-数据源-数据表字段新增
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity saveMdmDbField(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  主数据-数据源-数据表字段修改
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity updateMdmDbField(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  主数据-数据源-数据表字段删除
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity deleteMdmDbField(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  主数据-数据源-数据表字段规则获取
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity queryMdmDbFieldRule(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  主数据-数据源-数据表字段规则修改
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity updateMdmDbFieldRule(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  主数据-显示信息-显示类型获取
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity queryMdmView(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  主数据-显示信息-显示类型保存
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity saveMdmView(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  主数据-显示信息-显示类型修改
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity updateMdmView(JSONObject jsonObject);
    /**
     * @Author lvleigang
     * @Description  主数据-显示信息-显示字段获取
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity queryMdmViewField(JSONObject jsonObject);



    /**
     * @Author lvleigang
     * @Description  主数据-显示信息-显示字段设置保存
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity saveOrUpdateMdmViewField(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  主数据-显示信息-显示按钮获取
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity queryMdmViewButton(JSONObject jsonObject);


    /**
     * @Author lvleigang
     * @Description  主数据-显示信息-显示按钮保存
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity saveOrUpdateMdmViewButton(JSONObject jsonObject);


    /**
     * @Author lvleigang
     * @Description  主数据-数据来源-列表获取
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity queryMdmSource(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  主数据-数据来源保存
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity saveMdmSource(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  主数据-数据来源获取
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity getMdmSource(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  主数据-数据来源修改
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity updateMdmSource(JSONObject jsonObject);
    /**
     * @Author lvleigang
     * @Description  主数据-数据来源删除
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity deleteMdmSource(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  主数据-分发设置-列表获取
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity queryMdmDistribute(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  主数据-分发设置保存
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity saveMdmDistribute(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  主数据-分发设置获取
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity getMdmDistribute(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  主数据-分发设置修改
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity updateMdmDistribute(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  主数据-分发设置删除
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity deleteMdmDistribute(JSONObject jsonObject);


    /**
     * @Author lvleigang
     * @Description  主数据-写入日志-列表获取
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity queryMdmOptionLogPage(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  主数据-下发日志-列表获取
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity queryMdmDistributeLogPage(JSONObject jsonObject);


    /**
     * @Author lvleigang
     * @Description  主数据-数据源-服务获取（只获取主表）
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity queryMdmService(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  主数据-数据源-服务字段获取（只获取主表）
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity queryMdmServiceField(JSONObject jsonObject);


    /**
     * @Author lvleigang
     * @Description  主数据-分发-只获取主表
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity queryMdmMainDB(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  主数据-数据源-只获取主表字段
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity queryMdmMainDBField(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  主数据-分发设置-列表获取
     * @Date 11:43 上午 2024/6/11
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity queryMdmDistributeByMdmCode(JSONObject jsonObject);

    /**
     * 下载导入模版
     * @return
     */
    void generateExcelTemplate(HttpServletResponse response) throws IOException;

    /**
     * 导入模版
     * @param file
     */
    List<MdmModuleDbFiledsEntity> importTemplateFile(MultipartFile file, ImportExcelVO importExcelVO);
}
